A trend in infra-red (IR) remote controls for consumer electronics is the multi-brand universal remote control handunit which controls any one of a number of consumer electronics products manufactured by different manufacturers, and utilizing respective different remote control signal code formats. Universal remote control handunits provide the user with the convenience of using only one remote control handunit, while being able to control most, if not all, of the functions of the consumer electronics products.
To a large degree, the number of different functions and different remote control command signal formats that can be handled by a universal remote control is dependent upon the amount of memory available for remote control code storage.
There are two basic approaches to universal remote control handunits. A random access memory (RAM) based system is often described as a "learning" remote control handunit. This type of remote control handunit requires the user to "teach" the remote control handunit desired functions from his original handunit. This is usually done by switching the "learning" remote control handunit to a "learning mode", and physically orienting the two handunits such that the "learning" remote control handunit can receive the IR transmissions of the handunit to be emulated. This learning process begins as an information storage process, wherein an IR transmission is recorded as it is being received by the learning remote control. After this initial storage of the "raw" data, the raw data is analyzed and compressed, and then the final compressed version of the data is stored in RAM. When the universal remote control handunit is used in the remote control mode to transmit a command, the stored, compressed codes are recalled from memory, decompressed, and the resulting signal is transmitted.
A read-only memory (ROM) based system is restricted to a fixed set of devices, usually television receivers (TVs), videocassette recorders (VCRs), and cable converters. In such a handunit, all of the different code formats for all of the functions for each kind of device to be controlled, must be programmed beforehand. Here also, the remote control codes are usually compressed in some manner to occupy as little memory space as possible.
With each technique, since memory space is limited, the more efficient the compression technique is, the more functions can be stored. Another way to conserve memory space is to reduce the number of program instructions needed to address memory by providing a more efficient routine for addressing memory. The present invention is directed to this end, and is especially concerned with conserving memory space when so-called "indexed-addressing" is utilized.
The use of "matrices" (i.e., groups of memory locations) in microprocessor software is quite common, usually for look-up tables and/or data tables. They are so common, in fact, that most microprocessors contain an "index register" which can be used to access data indirectly. For example, if X=8 and POINTER is the starting point (in memory) of a data table, EQU LDA POINTER,X
fetches the 8th byte after POINTER in memory and stores it in the accumulator. That is, LDA POINTER,X is an instruction which causes the microcomputer to read data from a memory location addressed by the combination of the value of POINTER (a sixteen bit address), plus the value stored in the X register. This is a very powerful technique but it requires a large portion of memory to address certain matrices.